package net.hn.hnms.biz.analysis.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class GroundPressureRuleUtil {


    /**
     * 获取地压灾害等级得分
     *
     * @param kri 地压指标值（范围为 0 到 1）
     * @return 得分（float 类型）
     */
    public static float getGroundPressureDisasterLevelScores(float kri) {
        int disasterLevel = 0;
        float disasterScores = 100.0f;

        // 根据 KRI 值确定灾害等级
        if (kri >= 0.25 && kri < 0.5) {
            disasterLevel = 1;
        } else if (kri >= 0.5 && kri < 0.75) {
            disasterLevel = 2;
        } else if (kri >= 0.75) {
            disasterLevel = 3;
        }

        // 根据灾害等级计算得分
        if (disasterLevel == 1) {
            double temp = 100 - ((kri - 0.22) / (0.5 - 0.22)) * (100 - 95);
            disasterScores = roundTo2Decimals((float) temp);
        } else if (disasterLevel == 2) {
            double temp = 95 - ((kri - 0.5) / (0.75 - 0.5)) * (95 - 80);
            disasterScores = roundTo2Decimals((float) temp);
        } else if (disasterLevel == 3) {
            double temp = 80 - ((kri - 0.75) / (1 - 0.75)) * (80 - 60);
            disasterScores = roundTo2Decimals((float) temp);
        }

        // 返回最终得分
        return disasterScores;
    }

    /**
     * 四舍五入到小数点后 2 位
     *
     * @param value 需要四舍五入的值
     * @return 四舍五入后的值
     */
    private static float roundTo2Decimals(float value) {
        BigDecimal bd = new BigDecimal(value);
        bd = bd.setScale(2, RoundingMode.HALF_UP);
        return bd.floatValue();
    }

}
